package com.egoo.ticket.server.dao;

import com.egoo.ticket.server.pojo.entity.CustomField;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 * 自定义字段的Dao
 * @author Administrator
 */
@Component
public interface CustomFieldDao {
	/**
	 * TODO 更加字段id获取字段信息
	 * @param id
	 * @return
	 */
	CustomField selectById(Integer id);

	/**
	 * TODO 根据字段id获取字段的content
	 * @param id
	 * @return
	 */
	CustomField selectContentById(Integer id);

	/**
	 * TODO:
	 * @param currentPage
	 * @param pageSize
	 * @param tenantId
	 * @return
	 */
	List<CustomField> selectAll(@Param("currentPage") Integer currentPage,
                                @Param("pageSize") Integer pageSize,
                                @Param("tenantId") String tenantId);
	/**
	 * TODO 更加字段id获取字段信息
	 * @author: victor_tang
	 * @createtime: 2020/5/18 17:11
	 * @param searchMap 1
	 * @return: java.util.List<com.egoo.ews.service.vo.CustomField>
	 */
	List<CustomField> selectByCondition(Map<String, Object> searchMap);

	/**
	 * TODO
	 * @param tenantId
	 * @return
	 */
	List<CustomField> selectAllOpenSystem(@Param("tenantId") String tenantId);

	/**
	 * TODO
	 * @param tenantId
	 * @return
	 */
	List<CustomField> selectAllOpenCustom(@Param("tenantId") String tenantId);

	/**
	 * TODO
	 * @param tenantId
	 * @return
	 */
	List<CustomField> selectAllType(@Param("tenantId") String tenantId);

	/**
	 * TODO 批量新建自定义字段
	 * @param list
	 * @return
	 */
	Integer insertByBatch(List<CustomField> list);

	/**
	 * TODO
	 * 获取自定义字段的总个数
	 * @param tenantId
	 * @return
	 */
	Integer selectTotal(@Param("tenantId") String tenantId);


	/**
	 * TODO
	 * @param name
	 * @param tenantId
	 * @return
	 */
	List<CustomField> selectByName(@Param("name") String name,
                                   @Param("tenantId") String tenantId);

	/**
	 * TODO 根据字段类型获取自定义字段信息
	 * @param type
	 * @param tenantId
	 * @return
	 */
	List<CustomField> selectByType(@Param("type") String type,
                                   @Param("tenantId") String tenantId);

	/**
	 *  TODO:根据字段名称和类型分页获取自定义字段信息
 	 * @param name
	 * @param type
	 * @param tenantId
	 * @return
	 */
	List<CustomField> selectByNameAndType(@Param("name") String name,
                                          @Param("type") String type,
                                          @Param("tenantId") String tenantId);

	/**
	 * TODO:更新自定义字段的启动状态
	 * @param customField
	 * @return
	 */
	Integer updateUseStatus(CustomField customField);

	/**
	 * TODO:更新自定义字段的属性
	 * @param customField
	 * @return
	 */
	Integer updateContent(CustomField customField);

	/**
	 * TODO 删除自定义字段
	 * @param customField
	 * @return
	 */
	Integer delete(CustomField customField);
	/**
	 * TODO 根据id删除自定义字段
	 * @author: victor_tang
	 * @createtime: 2020/7/28 16:01
	 * @param id 1
	 * @return: java.lang.Integer
	 */
	Integer deleteById(Integer id);

    CustomField selectByCode(@Param("code") String dataSign,
							 @Param("tenantId") String tenantId);

	/**
	 * @Author: Donny_dong
	 * @Description:自定义map查询
	 * @Param:
	 * @return:
	 * @Date: 2020/11/23
	 */
	List<CustomField> selectByMap(Map<String,String> map);
}
